home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 13 / AMIGAplus Sonderheft 13 (1998)(ICP)(DE)[!].iso / rexx / tm2m2i20.rexx < prev    next >
OS/2 REXX Batch file  |  1997-11-18  |  23KB  |  1,002 lines

  1. /*
  2. ==============================================================================
  3. ==============================================================================
  4.  
  5. ToolManager2M2I V0.20
  6. (C) Ringard' Production - TS "Pumpkin" Rexx Cucurbitacee
  7.  
  8. Construction  d'une  configuration  M2I  a  partir  d'un  fichier de config
  9. ToolManager traduite en ASCII par TM2ASCII.
  10.  
  11. V0.19 :
  12. - propose la possibilite de definir un dock principal, afin d'eviter des
  13.   demandes de duplication intempestive.
  14. - gere totalement les appels croise (dock0->dock1->...->dock0)
  15. - ecriture d'un fichier "log" dans le repertoire ou se trouve la cfg TM
  16.   (chemin indique suivant la syntaxe arexx de M2I)
  17. - les hotkey non acceptes par M2I et ceux des docks TM sont supprimes (pas
  18.   de hotkey pour un tiroir M2I)
  19.  
  20. Tous bugs, suggestions et remarques sont a adresses a :
  21.  
  22. Thierry SCHMITT (tschmitt@hol.fr)
  23.  
  24. ==============================================================================
  25. ==============================================================================
  26. */
  27.  
  28.  
  29. icondx = 0        /* valeur X & Y de correction pour les icones: correspond */
  30. icondy = 14        /* a la pos. du coin haut/gauche d'une icones ToolManager */
  31.  
  32. OPTIONS RESULTS
  33. ADDRESS "M2IPort.Rexx"
  34.  
  35. REQUEST GADGETS "QUIT|CONTINUE" "AVERTISSEMENT !! : Une entité ToolManager de meme type avec strictement le même"||'0a'x||,
  36. "nom crashe le programme de conversion ( icone1: 'Wipe Out' = icone2: 'Wipe Out' est"||'0a'x||,
  37. "prohibe mais icone1: 'Wipe Out' & menu1: 'Wipe Out' convient ). Il n'est pas possible,"||'0a'x||,
  38. "à cause des contraintes d'Arexx, de remedier à cela, désole !"
  39.  
  40. IF RC=1 THEN EXIT
  41.  
  42.  
  43. MESSAGE "Choisissez le fichier de config ToolManager a traiter"
  44. REQFILE
  45. IF RC~=0 THEN DO
  46.     MESSAGE "Erreur/fichier ou abandon !"
  47.     CALL Exit_M2I2TM
  48. END
  49. tm_file = RESULT
  50.  
  51. flg=  OPEN('tm_cfgfile',tm_file,'R')
  52.  
  53. MESSAGE "Les objets de toolmanager ne definissent pas toujours un volume par defaut,"||'0a'x||"necessaire sous M2I...Choisissez le volume par default (DH0:, SYS:,...)"
  54. REQDIR "SYS:"
  55. IF RC~=0 THEN DO
  56.     MESSAGE "Abandon !"
  57.     CALL Exit_M2I2TM
  58. END
  59. defdospath=RESULT
  60. IF defdospath="" THEN defdospath="SYS:"
  61.  
  62.  
  63. MESSAGE "Ou mettre le fichier de compte-rendu ?"
  64. REQFILE "T:TM2M2I.log"
  65. IF RC~=0 THEN DO
  66.     MESSAGE "Erreur/fichier ou abandon !"
  67.     CALL Exit_M2I2TM
  68. END
  69. log_file = RESULT
  70.  
  71. flg = OPEN('log',log_file,'W')
  72.  
  73.  
  74. /* ============================== */
  75. /* CREATION B.D DU FICHIER CONFIG */
  76. /* ============================== */
  77.  
  78. /* ------------------------- */
  79. /* --- hotkey autorisees --- */
  80. /* ------------------------- */
  81.  
  82. flg = SETCLIP("hotkey LSHIFT","LSHIFT")
  83. flg = SETCLIP("hotkey LEFT_SHIFT","LSHIFT")
  84. flg = SETCLIP("hotkey RSHIFT","RSHIFT")
  85. flg = SETCLIP("hotkey RIGHT_SHIFT","RSHIFT")
  86. flg = SETCLIP("hotkey SHIFT","RSHIFT")
  87. flg = SETCLIP("hotkey CONTROL","CTRL")
  88. flg = SETCLIP("hotkey CTRL","CTRL")
  89. flg = SETCLIP("hotkey LALT","LALT")
  90. flg = SETCLIP("hotkey LEFT_ALT","LALT")
  91. flg = SETCLIP("hotkey RALT","RALT")
  92. flg = SETCLIP("hotkey RIGHT_ALT","RALT")
  93. flg = SETCLIP("hotkey ALT","RALT")
  94. flg = SETCLIP("hotkey LCOMMAND","LCOMMAND")
  95. flg = SETCLIP("hotkey LAMIGA","LCOMMAND")
  96. flg = SETCLIP("hotkey LEFT_AMIGA","LCOMMAND")
  97. flg = SETCLIP("hotkey LEFT_COMMAND","LCOMMAND")
  98. flg = SETCLIP("hotkey RCOMMAND","RCOMMAND")
  99. flg = SETCLIP("hotkey RAMIGA","RCOMMAND")
  100. flg = SETCLIP("hotkey RIGHT_AMIGA","RCOMMAND")
  101. flg = SETCLIP("hotkey RIGHT_COMMAND","RCOMMAND")
  102.  
  103. /* ------------------- */
  104. /* --- exec object --- */
  105. /* ------------------- */
  106.  
  107. SAY "---execs---"
  108. flg = WRITELN('log',"---execs---")
  109.  
  110. execcnt= 0
  111. flg = READLN('tm_cfgfile')        /* ligne de section "Exec Objects" */
  112. IF flg~="Exec Objects" THEN DO
  113.     MESSAGE "Ca ne ressemble pas a un fichier"||'0a'x||"de cfg ToolManage en Ascii : Abandon!"
  114.     CALL Exit_M2I2TM
  115. END
  116.  
  117. section = READLN('tm_cfgfile')
  118.  
  119. DO WHILE section~="---"
  120.     execname = "execobj "||section
  121.     flg = WRITELN('log',execname)
  122.  
  123.     execinfo = READLN('tm_cfgfile')
  124.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  125.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  126.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  127.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  128.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  129.     execinfo = execinfo||"¶"||READLN('tm_cfgfile')
  130.  
  131.     flg = SETCLIP(execname,execinfo)
  132.  
  133.     execcnt = execcnt + 1
  134.     section = READLN('tm_cfgfile')
  135.  
  136. END
  137.  
  138. SAY execcnt
  139. flg = WRITELN('log','total tools: '||execcnt)
  140.  
  141. /* -------------------- */
  142. /* --- image object --- */
  143. /* -------------------- */
  144.  
  145. SAY "---images---"
  146. flg = WRITELN('log',"---images---")
  147.  
  148. imagcnt = 0
  149. flg = READLN('tm_cfgfile')        /* ligne de section "Image Objects" */
  150. section = READLN('tm_cfgfile')
  151.  
  152. DO WHILE section~="---"
  153.     imagname = "imagobj "||section
  154.     flg = WRITELN('log',imagname)
  155.  
  156.     imaginfo = READLN('tm_cfgfile')
  157.  
  158.     flg = SETCLIP(imagname,imaginfo)
  159.  
  160.     imagcnt = imagcnt + 1
  161.     section = READLN('tm_cfgfile')
  162. END
  163.  
  164. SAY imagcnt
  165. flg = WRITELN('log','total images: '||imagcnt)
  166.  
  167. /* -------------------- */
  168. /* --- sound object --- */
  169. /* -------------------- */
  170.  
  171. SAY "---sounds---"
  172. flg = WRITELN('log',"---sounds---")
  173.  
  174. soundcnt = 0
  175. flg = READLN('tm_cfgfile')        /* ligne de section "Sound Objects" */
  176. section = READLN('tm_cfgfile')
  177.  
  178. DO WHILE section~="---"
  179.     soundname = "soundobj "||section
  180.     flg = WRITELN('log',soundname)
  181.  
  182.     soundinfo = READLN('tm_cfgfile')
  183.     IF UPPER(WORD(soundinfo,1))="FILE" THEN DO
  184.         ppos = WORDINDEX(soundinfo,2)
  185.         soundinfo=SUBSTR(soundinfo,ppos,LENGTH(soundinfo)-ppos+1)
  186.     END
  187.  
  188.     nil = READLN('tm_cfgfile')    /* saute def port arexx */
  189.  
  190.     flg = SETCLIP(soundname,soundinfo)
  191.  
  192.     soundcnt = soundcnt + 1
  193.     section = READLN('tm_cfgfile')
  194.  
  195. END
  196.  
  197. SAY soundcnt
  198. flg = WRITELN('log','total sons: '||soundcnt)
  199.  
  200. flg = SETCLIP('finelem','dummy')
  201.  
  202. /* -------------------- */
  203. /* --- menu object --- */
  204. /* -------------------- */
  205.  
  206. SAY "---menus---"
  207. flg = WRITELN('log',"---menus---")
  208.  
  209. menucnt = 0
  210. flg = READLN('tm_cfgfile')        /* ligne de section "Menu Objects" */
  211. section = READLN('tm_cfgfile')
  212.  
  213. DO WHILE section~="---"
  214.     menuname = "menuobj "||section
  215.     flg = WRITELN('log',menuname)
  216.  
  217.     menuinfo = READLN('tm_cfgfile')
  218.     menuinfo = menuinfo||"¶"||READLN('tm_cfgfile')
  219.  
  220.     flg = SETCLIP(menuname,menuinfo)
  221.  
  222.     menucnt = menucnt + 1
  223.     section = READLN('tm_cfgfile')
  224. END
  225.  
  226. SAY menucnt
  227. flg = WRITELN('log','total menus: '||menucnt)
  228.  
  229. /* ------------------- */
  230. /* --- icon object --- */
  231. /* ------------------- */
  232.  
  233. SAY "---icons---"
  234. flg = WRITELN('log',"---icons---")
  235.  
  236. iconcnt = 0
  237. flg = READLN('tm_cfgfile')        /* ligne de section "Icon Objects" */
  238. section = READLN('tm_cfgfile')
  239.  
  240. DO WHILE section~="---"
  241.     iconname = "iconobj "||section
  242.     flg = WRITELN('log',iconname)
  243.  
  244.     iconinfo = READLN('tm_cfgfile')
  245.     iconinfo = iconinfo||"¶"||READLN('tm_cfgfile')
  246.     iconinfo = iconinfo||"¶"||READLN('tm_cfgfile')
  247.     iconinfo = iconinfo||"¶"||READLN('tm_cfgfile')
  248.     iconinfo = iconinfo||"¶"||READLN('tm_cfgfile')
  249.  
  250.     flg = SETCLIP(iconname,iconinfo)
  251.  
  252.     iconcnt = iconcnt + 1
  253.     section = READLN('tm_cfgfile')
  254. END
  255.  
  256. SAY iconcnt
  257. flg = WRITELN('log','total icones: '||iconcnt)
  258.  
  259. /* ------------------- */
  260. /* --- dock object --- */
  261. /* ------------------- */
  262.  
  263. SAY "---docks---"
  264. flg = WRITELN('log',"---docks---")
  265.  
  266. dockcnt = 0
  267. flg = READLN('tm_cfgfile')        /* ligne de section "Dock Objects" */
  268.  
  269. docksection = READLN('tm_cfgfile')
  270. dockliste = ""
  271.  
  272. DO WHILE docksection~="---"
  273.  
  274.     dockliste = dockliste||'0a'x||docksection
  275.     dockname = "dockobj "||docksection
  276.     flg = WRITELN('log',dockname)
  277.  
  278.     dockinfo = READLN('tm_cfgfile')                    /*flags*/
  279.     dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')    /*hotkey*/
  280.     dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')    /*pubscreen*/
  281.     dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')    /*docktitle*/
  282.     flg = READLN('tm_cfgfile')                        /*fonts - inutilise !!*/
  283.     dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')    /*taille fonts*/
  284.     dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')    /*position*/
  285.     flg = READLN('tm_cfgfile')                        /*nbre de colonnes - inutilise !!*/
  286.  
  287.     flg = READLN('tm_cfgfile')                        /* ligne de section "Tools" */
  288.     section = READLN('tm_cfgfile')
  289.     DO WHILE section~="---"
  290.         dockinfo = dockinfo||"¶"||section
  291.         dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')
  292.         dockinfo = dockinfo||"¶"||READLN('tm_cfgfile')
  293.             section = READLN('tm_cfgfile')
  294.         END
  295.  
  296.     flg = SETCLIP(dockname,dockinfo)
  297.  
  298.     dockcnt = dockcnt + 1
  299.     docksection = READLN('tm_cfgfile')
  300. END
  301.  
  302. SAY dockcnt
  303. flg = WRITELN('log','total docks: '||dockcnt)
  304.  
  305. maindock = "dummy"
  306. savemain = ""
  307. dockexists = 0
  308.  
  309. DO WHILE dockexists=0 | maindock=""
  310.     REQSTRING "Avez-vous un dock principal ?"||'0a'x||,
  311.     "entrez le nom (sensitive !), sinon Ok/Enter"||'0a'x||,
  312.     "Taper des caracteres quelconques voir la liste des docks"
  313.     maindock = RESULT
  314.     flg = RC
  315.     IF flg = 5 THEN maindock=""
  316.     IF flg = 5 THEN LEAVE 
  317.  
  318.     dockexists = 1
  319.     IF maindock~="" THEN DO
  320.         flg = GETCLIP("dockobj "||maindock)
  321.         IF flg = "" THEN DO
  322.             MESSAGE "dock "||maindock||" non trouve !"
  323.             dockexists=0
  324.             MESSAGE "liste des docks :"||'0a'x||dockliste
  325.         END
  326.     END
  327. END
  328.  
  329.  
  330. /* ============================== */
  331. /* TRAITEMENT DES CLIPS - INSTALL */
  332. /* ============================== */
  333.  
  334. flg = CLOSE('tm_cfgfile')
  335.  
  336. flg = WRITELN('log','0A'X)
  337. flg = WRITELN('log','Traitement...'||'0A'X)
  338.  
  339. flg = WRITELN('log','...Menus'||'0a'x)
  340.  
  341. allclips = SHOW(CLIP)
  342. allclips = RIGHT(allclips,LENGTH(allclips)-POS("finelem",allclips))
  343. allclips = DELWORD(allclips,1,1) /*clip finelem*/
  344.  
  345. drwcnt = 1
  346. GET XPOS ":"
  347. orig_x = RESULT
  348. orig_x = orig_x + 6
  349.  
  350. GET YPOS ":"
  351. orig_y = RESULT
  352. orig_y = orig_y + 40
  353.  
  354. /* ------------------------- */
  355. /* --- creation drw menu --- */
  356. /* ------------------------- */
  357.  
  358. /* clip menuobj : nom_execobj|nom_soundobj */
  359. /* ....................................... */
  360.  
  361. M2Ipath = ":"
  362. ADDDRW "M2I_Menu" M2Ipath
  363. REDRAW M2Ipath
  364.  
  365. M2Ipath = M2Ipath||drwcnt
  366.  
  367. SET XPOS orig_x M2Ipath
  368. SET YPOS orig_y M2Ipath
  369. SET WLIST 2 M2Ipath                /* = texte */
  370. SET LOCK 6 M2Ipath                /* = 3D */
  371. OPENDRW M2Ipath
  372.  
  373. toolnum  = 1
  374.  
  375. DO WHILE menucnt~=0
  376.  
  377.     allclips = DELWORD(allclips,1,1)
  378.     ppos = POS("menuobj",allclips)
  379.     IF ppos = 0 THEN ppos = POS("iconobj",allclips)
  380.     menutool = LEFT(allclips,ppos-2)
  381.     allclips = RIGHT(allclips,LENGTH(allclips)-ppos+1)
  382.  
  383.     /*clip menu*/
  384.     newmenu = GETCLIP("menuobj "||menutool)
  385.  
  386.     /*clip exec*/
  387.     ppos = POS("¶",newmenu)
  388.     toolname = LEFT(newmenu,ppos-1)
  389.        newinfo = GETCLIP("execobj "||toolname)
  390.  
  391.     IF newinfo="" THEN ITERATE
  392.  
  393.     /*clip sound*/
  394.     newsound = RIGHT(newmenu,LENGTH(newmenu)-ppos)
  395.     toolsound = GETCLIP("soundobj "||newsound)
  396.     toolimag = ""
  397.  
  398.     M2Ienv = M2Ipath
  399.  
  400.     CALL Def_M2Itool
  401.  
  402.     toolnum = RESULT
  403.  
  404.     REDRAW M2Ipath
  405.  
  406.     menucnt = menucnt - 1
  407.  
  408. END
  409.  
  410. CLOSEDRW M2Ipath
  411.  
  412.  
  413. /* -------------------------- */
  414. /* --- creation drw icons --- */
  415. /* -------------------------- */
  416.  
  417. /* clip iconobj : flag_nom_visible|nom_execobj|imag|sound|position */
  418. /* ............................................................... */
  419.  
  420. flg = WRITELN('log','0a'x||'...Icones'||'0a'x)
  421.  
  422. drwcnt = drwcnt + 1
  423. orig_x = orig_x + 70
  424.  
  425. M2Ipath = ":"
  426. ADDDRW "M2I_Icons" M2Ipath
  427. REDRAW M2Ipath
  428.  
  429. M2Ipath = M2Ipath||drwcnt
  430.  
  431. SET XPOS orig_x M2Ipath            /*look drawers du drw "icons"*/
  432. SET YPOS orig_y M2Ipath
  433. SET WLIST 1 M2Ipath                /* = verticale */
  434. SET LOCK 6 M2Ipath                /* = 3D */
  435.  
  436. OPENDRW M2Ipath
  437.  
  438. iconnum  = 1
  439.  
  440. DO WHILE iconcnt~=0
  441.  
  442.     toolnum  = 1
  443.  
  444.     allclips = DELWORD(allclips,1,1)
  445.     ppos = POS("iconobj",allclips)
  446.     IF ppos = 0 THEN ppos = POS("dockobj",allclips)
  447.     icontool = LEFT(allclips,ppos-2)
  448.     allclips = RIGHT(allclips,LENGTH(allclips)-ppos+1)
  449.  
  450.     M2Iicondrw = M2Ipath||"/"||iconnum
  451.  
  452.     /*clip menu*/
  453.     newicon = GETCLIP("iconobj "||icontool)
  454.  
  455.     ppos = POS("¶",newicon)
  456.     newiname = LEFT(newicon,ppos-1)    /* flag "nom visible" */
  457.     newicon = RIGHT(newicon,LENGTH(newicon)-ppos)
  458.  
  459.     /*clip exec*/
  460.     ppos = POS("¶",newicon)
  461.     toolname = LEFT(newicon,ppos-1)
  462.     newinfo = GETCLIP("execobj "||toolname)
  463.  
  464.     IF newinfo="" THEN ITERATE
  465.  
  466.     newicon = RIGHT(newicon,LENGTH(newicon)-ppos)
  467.  
  468.     /*clip imag*/
  469.     ppos = POS("¶",newicon)
  470.     newimag = LEFT(newicon,ppos-1)
  471.     toolimag = GETCLIP("imagobj "||newimag)
  472.     newicon = RIGHT(newicon,LENGTH(newicon)-ppos)
  473.  
  474.     /*clip sound*/
  475.     ppos = POS("¶",newicon)
  476.     newsound = LEFT(newicon,ppos-1)
  477.     toolsound = GETCLIP("soundobj "||newsound)
  478.     ppos = POS("¶",newicon)
  479.     /*position*/
  480.     newpos = RIGHT(newicon,LENGTH(newicon)-ppos)
  481.  
  482.     ADDDRW '"'||toolname||'"' M2Ipath    /* =":2" */
  483.     REDRAW M2Ipath
  484.  
  485.     M2Ienv = M2Ipath||"/"||iconnum        /* chemin du tool-icon courant */
  486.  
  487.     OPENDRW M2Ienv
  488.  
  489.     CALL Def_M2Itool
  490.  
  491.     toolnum = RESULT
  492.  
  493.     IF newiname THEN DO
  494.         SET LABEL toolname M2Iicondrw||"/1"    /* =":n/n/1" -> icon */
  495.     END
  496.     ELSE DO
  497.         SET LABEL '' M2Iicondrw||"/1"        /* =":n/n/1" -> icon */
  498.       END
  499.  
  500.     CLOSEDRW M2Iicondrw
  501.  
  502.     SET ICON toolimag M2Iicondrw
  503.  
  504.     SET IPLACE 0 M2Iicondrw                /* centree */
  505.     SET WLIST 1 M2Iicondrw                /* = verticale */
  506.     SET LOCK 6 M2Iicondrw                /* = 3D */
  507.     SET XPOS WORD(newpos,1)+icondx M2Iicondrw
  508.     SET YPOS WORD(newpos,2)+icondy M2Iicondrw
  509.  
  510.     OPENDRW M2Iicondrw
  511.  
  512.     REDRAW M2Ipath
  513.  
  514.     iconcnt = iconcnt - 1
  515.     iconnum = iconnum + 1
  516.  
  517.     /* detruire tiroir amont si non duplication (toolnum non passe a 2) */
  518.     IF toolnum=1 THEN DO
  519.         DELETE M2Iicondrw
  520.         REDRAW M2Ipath
  521.         iconnum = iconnum - 1
  522.     END
  523.  
  524. END
  525.  
  526. CLOSEDRW M2Ipath
  527.  
  528.  
  529. /* --------------------------- */
  530. /* --- creation drws docks --- */
  531. /* --------------------------- */
  532.  
  533. /* clip dockobj : ??|hotkey|pubscreen|docktitle|??|pos|..*/
  534. /* ..nom_execobj|imag_execobj|sound_execobj */
  535. /* ..................................................... */
  536.  
  537. flg = WRITELN('log','0a'x||'...Docks'||'0a'x)
  538.  
  539. drwcnt = drwcnt + 1
  540. orig_x = orig_x + 70
  541.  
  542. M2Ipath = ":"
  543. ADDDRW "M2I_Docks" M2Ipath
  544. REDRAW M2Ipath
  545.  
  546. M2Ipath = M2Ipath||drwcnt
  547.  
  548. SET XPOS orig_x M2Ipath
  549. SET YPOS orig_y M2Ipath
  550. SET WLIST 1 M2Ipath                /* = verticale */
  551. SET LOCK 6 M2Ipath                /* = 3D */
  552. OPENDRW M2Ipath
  553.  
  554. toolnum  = 1
  555.  
  556.  
  557. DO WHILE dockcnt~=0
  558.  
  559.     /* traiter main en 1er */
  560.     IF maindock~="" & maindock~="dummydummydummy" THEN DO
  561.         dockname = maindock
  562.     END
  563.     ELSE DO
  564.         allclips = DELWORD(allclips,1,1)
  565.         ppos = POS("dockobj",allclips)
  566.  
  567.         IF ppos = 0 THEN DO
  568.             dockname = allclips
  569.         END
  570.         ELSE DO
  571.             dockname = LEFT(allclips,ppos-2)
  572.             allclips = RIGHT(allclips,LENGTH(allclips)-ppos+1)
  573.         END
  574.     END
  575.  
  576.     nodup=1
  577.  
  578.     GETPATH dockname
  579.     dupdock = rc
  580.  
  581.     /* pour ne plus traiter le main */
  582.     IF savemain = dockname THEN DO
  583.         dupdock = -1
  584.         nodup = 0
  585.     END
  586.  
  587.     IF dupdock=0 THEN DO
  588.  
  589.         CALL check_ref_croisee M2Ipath dockname
  590.         nodup = RESULT
  591.  
  592.         IF nodup=0 THEN DO
  593.  
  594.             IF maindock~="dummydummydummy" THEN DO
  595.  
  596.                 flg = WRITELN('log',M2Ipath||'09'x||'09'x||"DUPLICA ! - Dock "||dockname)
  597.  
  598.                 GETPATH M2Ipath
  599.                 ddduppath = RESULT
  600.  
  601.                 M2Iwarn = "le dock "||dockname||" existe.duplication?"
  602.                 REQUEST M2Iwarn
  603.                 nodup = rc
  604.             END
  605.         END
  606.     END
  607.  
  608.     IF nodup=1 THEN DO
  609.  
  610.         flg = WRITELN('log',M2Ipath||'09'x||'09'x||" Dock "||dockname||" traite")
  611.  
  612.         ADDDRW '"'||dockname||'"' M2Ipath
  613.         REDRAW M2Ipath
  614. /*
  615.         SET WLIST 1 M2Ipath                /* = verticale */
  616.         SET LOCK 2 M2Ipath                /* = cadre */
  617. */
  618.         M2Ienv = M2Ipath||"/"||toolnum
  619.         OPENDRW M2Ienv
  620.  
  621.         CALL mkdock
  622.  
  623.         dockflags = RESULT
  624.         toolnum = toolnum + 1
  625.  
  626.     END
  627.  
  628.     dockcnt = dockcnt - 1
  629.  
  630.  
  631.     /* SUPRESSION virtuelle du MAIN-DOCK apres traitement */
  632.     IF maindock~="" & savemain="" THEN DO
  633.         savemain = maindock
  634.         maindock = "dummydummydummy"
  635.     END
  636.  
  637. END
  638.  
  639. CLOSEDRW M2Ipath
  640.  
  641. ADDTOOL "EDIT" ":"
  642. SET TOOL "@EDIT" ":"||drwcnt+1
  643. REDRAW ":"
  644.  
  645. ADDTOOL "QUIT" ":"
  646. SET TOOL "@QUIT" ":"||drwcnt+2
  647. REDRAW ":"
  648.  
  649. MESSAGE "FIN DE CONVERSION !!"
  650.  
  651. flg = CLOSE('log')
  652.  
  653. EDMODE OFF
  654.  
  655. Exit_M2I2TM:
  656.  
  657.  
  658. EXIT
  659.  
  660.  
  661.  
  662.  
  663.  
  664. /* =================================================== */
  665. /* DEFINITION D'UN TOOL M2I A PARTIR DU CLIP "NEWINFO" */
  666. /* =================================================== */
  667.  
  668. Def_M2Itool: PROCEDURE EXPOSE toolnum toolname toolsound toolimag newinfo M2Ienv defdospath maindock savemain
  669.  
  670.     M2Ikeys = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10"
  671.  
  672.     M2Ipath = M2Ienv
  673.     M2Inextpath = M2Ipath||"/"||toolnum
  674.  
  675.     IF POS(":",toolimag)=0 & toolimag~="" THEN toolimag = defdospath||toolimag
  676.     IF POS(":",toolsound)=0 & toolsound~="" THEN toolsound = defdospath||toolsound
  677.  
  678.     toolname = '"'||toolname||'"'
  679.     toolimag = '"'||toolimag||'"'
  680.     toolsound = '"'||toolsound||'"'
  681.  
  682.     /*extraction des infos du clip "exec" (="newinfo")*/
  683.  
  684.     ppos = POS("¶",newinfo)
  685.     nt_launch = LEFT(newinfo,ppos-1)
  686.     nt_arg = WORD(nt_launch,1)
  687.     nt_type = WORD(nt_launch,2)
  688.     nt_pri = WORD(nt_launch,3)
  689.     nt_delay = WORD(nt_launch,4)
  690.     nt_stack = WORD(nt_launch,5)
  691.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  692.  
  693.     ppos = POS("¶",newinfo)
  694.     nt_cmd = LEFT(newinfo,ppos-1)
  695.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  696.  
  697.     ppos = POS("¶",newinfo)
  698.     nt_cdir = LEFT(newinfo,ppos-1)
  699.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  700.  
  701.     ppos = POS("¶",newinfo)
  702.     nt_hkey = LEFT(newinfo,ppos-1)
  703.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  704.  
  705.     ppos = POS("¶",newinfo)
  706.     nt_out = LEFT(newinfo,ppos-1)
  707.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  708.  
  709.     ppos = POS("¶",newinfo)
  710.     nt_path = LEFT(newinfo,ppos-1)        /* inutilise */
  711.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  712.  
  713.     ppos = POS("¶",newinfo)
  714.     IF ppos~=0 THEN nt_pub = LEFT(newinfo,ppos-1) ELSE nt_pub=""
  715.  
  716.     newinfo = RIGHT(newinfo,LENGTH(newinfo)-ppos)
  717.  
  718.  
  719.     /*positionement des champs M2I*/
  720.  
  721.     IF nt_type > 3 THEN DO            /*erreur sur exec type "hotkey" ou "acces"*/
  722.  
  723.         MESSAGE "Type d'objet "||nt_type||":"||toolname||" non gere par M2i"
  724.  
  725.         flg = WRITELN('log',"Type d'objet "||nt_type||":"||toolname||" non gere par M2i")
  726.  
  727.         toolname = "HOrreur"||M2Ipath
  728.         ADDTOOL toolname M2Ipath
  729.         GETPATH M2Inextpath
  730.         toolname = RESULT
  731.         SET LABEL '"'||toolname||'"' M2Inextpath
  732.         SET ICON "HOrreur" M2Inextpath    /*z'yva, tet de mort*/
  733.  
  734.     END
  735.     IF nt_type > 3 THEN RETURN
  736.  
  737.     /* un tool... */
  738.     IF nt_type < 3 THEN DO
  739.         ADDTOOL toolname M2Ipath
  740.         SET SOUND toolsound M2Inextpath
  741.         SET WB nt_type M2Inextpath
  742.  
  743.         SET PRI nt_pri M2Inextpath
  744.         SET STACK nt_stack M2Inextpath
  745.  
  746.         ppos = POS(" ",nt_cmd)
  747.         IF ppos~=0 THEN DO
  748.             nt_arg = RIGHT(nt_cmd,LENGTH(nt_cmd)-ppos)
  749.  
  750.             nt_arg = "'"||nt_arg||"'"
  751.  
  752.             SET ARG nt_arg M2Inextpath
  753.             nt_cmd = LEFT(nt_cmd,ppos-1)
  754.         END
  755.         IF POS(":",nt_cmd)=0 THEN nt_cmd = defdospath||nt_cmd
  756.         SET TOOL nt_cmd M2Inextpath
  757.         SET PATH nt_cdir M2Inextpath
  758.  
  759.         M2Ihkey = ""
  760.         nt_hkey = UPPER(nt_hkey)
  761.  
  762.         IF nt_hkey~="" THEN DO
  763.             DO WHILE WORDS(nt_hkey)~=0
  764.                 tmhkey = GETCLIP("hotkey "||WORD(nt_hkey,1))
  765.                 IF tmhkey="" & POS(WORD(nt_hkey,1),M2Ikeys)=0 THEN DO
  766.                     badkey = "key "||WORD(nt_hkey,1)||" non autorisee pour le tool "||nt_cmd
  767.                     MESSAGE badkey
  768.  
  769.                     flg = WRITELN('log',M2Ipath||'09'x||'09'x||badkey)
  770.  
  771.                     M2Ihkey = ""
  772.                     BREAK
  773.                 END
  774.                 ELSE DO
  775.                     IF WORDS(nt_hkey)=1 THEN tmhkey = nt_hkey
  776.                     M2Ihkey = M2Ihkey||tmhkey||" "
  777.                 END
  778.                 nt_hkey = DELWORD(nt_hkey,1,1)
  779.             END
  780.         END
  781.         IF M2Ihkey~="" THEN M2Ihkey = LEFT(M2Ihkey,LENGTH(M2Ihkey)-1) /*suppr du dernier " "*/
  782.  
  783.         M2Ihkey = "'"||M2Ihkey||"'"
  784.  
  785.         SET HOTKEY M2Ihkey M2Inextpath
  786.         SET IO nt_out M2Inextpath
  787.  
  788.         toolnum = toolnum + 1
  789.  
  790.         flg = WRITELN('log',M2Ipath||'09'x||'09'x||" Tool "||toolname||" traite")
  791.  
  792.     END
  793.  
  794.     /* un drawer... */
  795.     ELSE DO
  796.  
  797.         dockname = nt_cmd                    /*var recurs.*/
  798.  
  799.         IF maindock = dockname THEN DO
  800.             MESSAGE "Le dock principal ne peux etre defini en icone"||'0a'x||,
  801.             "ou en menu - Veuillez le glisser en edition apres"||'0a'x||,
  802.             "traduction complete du fichier de configuration"
  803.             nodup = 0
  804.             dupdock = -1
  805.         END
  806.         ELSE DO
  807.             nodup=1
  808.  
  809.             GETPATH dockname
  810.             dupdock = rc
  811.  
  812.             IF savemain = dockname THEN DO
  813.                 dupdock = -1
  814.                 nodup = 0
  815.             END
  816.  
  817.         END
  818.  
  819.  
  820.         IF dupdock=0 THEN DO
  821.  
  822.             CALL check_ref_croisee M2Ipath dockname
  823.             nodup = RESULT
  824.  
  825.             IF nodup=0 THEN DO
  826.                 IF maindock~="dummydummydummy" THEN DO
  827.  
  828.                     flg = WRITELN('log',M2Ipath||'09'x||'09'x||"DUPLICA ! - Dock "||dockname)
  829.  
  830.                     GETPATH M2Ipath
  831.                     ddduppath = RESULT
  832.                     M2Iwarn = "le dock "||dockname||" existe.duplication?"
  833.                     REQUEST M2Iwarn
  834.                     nodup = rc
  835.                 END
  836.             END
  837.         END
  838.  
  839.         IF nodup=1 THEN DO
  840.  
  841.             flg = WRITELN('log',M2Ipath||'09'x||'09'x||" Dock "||dockname||" traite")
  842.  
  843.             ADDDRW '"'||dockname||'"' M2Ipath
  844.             SET WLIST 1 M2Inextpath                /* = verticale */
  845.             SET LOCK 2 M2Inextpath                /* = encadree */
  846.             REDRAW M2Ipath
  847.  
  848.             M2Ienv = M2Inextpath                /*var recurs.*/
  849.             OPENDRW    M2Ienv
  850.             CALL mkdock                            /*procedure recursive*/
  851.             M2Ienv = M2Ipath
  852.  
  853.             toolnum = toolnum + 1
  854.  
  855.         END
  856.  
  857.     END
  858.  
  859.     SET ICON toolimag M2Inextpath
  860.  
  861. RETURN toolnum
  862.  
  863.  
  864. /* ================================ */
  865. /* CREATION D'UN DOCK (=DRAWER M2I) */
  866. /* ================================ */
  867.  
  868. /* clip dockobj : ??|hotkey|pubscreen|docktitle|??|pos|..*/
  869. /* ..nom_execobj|imag_execobj|sound_execobj */
  870. /* ..................................................... */
  871.  
  872. mkdock: PROCEDURE EXPOSE dockname M2Ienv defdospath savemain
  873.  
  874.     M2Ipath = M2Ienv
  875.  
  876.     toolnum = 1
  877.  
  878.     dockclip = GETCLIP("dockobj "||dockname)
  879.  
  880.     ppos = POS("¶",dockclip)
  881.        dockflags = LEFT(dockclip,ppos-1)
  882.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  883.  
  884.     ppos = POS("¶",dockclip)
  885.        dockhkey = LEFT(dockclip,ppos-1)
  886.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  887.  
  888.     ppos = POS("¶",dockclip)
  889.     dockpub = LEFT(dockclip,ppos-1)
  890.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  891.  
  892.     ppos = POS("¶",dockclip)
  893.     dockfen = LEFT(dockclip,ppos-1)
  894.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  895.  
  896.     ppos = POS("¶",dockclip)
  897.     docksizef = LEFT(dockclip,ppos-1)
  898.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  899.  
  900.     ppos = POS("¶",dockclip)
  901.     dockpos = LEFT(dockclip,ppos-1)
  902.     dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  903.  
  904.     SET LOCK 2 M2Ipath                    /* = encadree */
  905.  
  906.     SET XPOS WORD(dockpos,1) M2Ipath
  907.     SET YPOS WORD(dockpos,2)+3 M2Ipath        /* +3 because le cadre */
  908.  
  909.     /* flags dock TM :    */
  910.     /* 1 = activated    */
  911.     /* 2 = centered        */
  912.     /* 4 = frontmost    */
  913.     /* 8 = menu            */
  914.     /* 16 = pattern        */
  915.     /* 32 = popup        */
  916.     /* 64 = text        */
  917.     /* 128 = vertical    */
  918.     /* 256 = backdrop    */
  919.     /* 512 = sticky        */
  920.     IF dockflags>=128 THEN DO
  921.         SET WLIST 1 M2Ipath                            /*vert.*/
  922.     END
  923.     ELSE DO
  924.         SET WLIST 0 M2Ipath                            /*sinon horiz.*/
  925.     END
  926.     dockflags = dockflags//128                /*modulo*/
  927.     IF dockflags>=64 THEN SET WLIST 2 M2Ipath        /*text*/
  928.     dockflags = dockflags//64
  929.     IF dockflags>=2 THEN SET IPLACE 0 M2Ipath        /*centered*/
  930.     dockflags = dockflags//2
  931.  
  932.     ppos = POS("¶",dockclip)
  933.  
  934.     DO WHILE ppos~=0
  935.  
  936.         toolname = LEFT(dockclip,ppos-1)
  937.         dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  938.  
  939.         newinfo = GETCLIP("execobj "||toolname)
  940.     
  941.         IF newinfo="" THEN DO
  942.             ppos = POS("¶",dockclip)
  943.             ITERATE
  944.         END
  945.  
  946.         ppos = POS("¶",dockclip)
  947.         dockimag = LEFT(dockclip,ppos-1)
  948.         toolimag = GETCLIP("imagobj "||dockimag)
  949.         dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  950.         ppos = POS("¶",dockclip)
  951.  
  952.         docksound=""
  953.         IF ppos~=0 THEN docksound = LEFT(dockclip,ppos-1)
  954.  
  955.         toolsound = GETCLIP("soundobj "||docksound)
  956.         dockclip = RIGHT(dockclip,LENGTH(dockclip)-ppos)
  957.  
  958.         M2Ienv = M2Ipath
  959.  
  960.         CALL Def_M2Itool
  961.         toolnum = RESULT
  962.  
  963.         REDRAW M2Ipath
  964.  
  965.         ppos = POS("¶",dockclip)
  966.  
  967.     END
  968.  
  969.     REDRAW M2Ipath
  970.  
  971.     IF dockflags=0 THEN CLOSEDRW M2Ipath
  972.  
  973.     dockflags = dockflags||" "||toolnum
  974.  
  975. RETURN dockflags
  976.  
  977.  
  978. /* SOUS-ROUTINE DE TEST DE REF. CROISEE AVAL->AMONT */
  979.  
  980.  
  981. check_ref_croisee:
  982.  
  983.     PARSE ARG pathcheck refdock
  984.  
  985.     nodup=0
  986.  
  987.     DO WHILE LENGTH(pathcheck)>2
  988.  
  989.         GETPATH pathcheck
  990.         dockamont = RESULT
  991.         IF POS(STRIP(refdock),dockamont)~=0 THEN DO
  992.             nodup=-1
  993.             SAY "ref. croisee ! - Dock "||refdock
  994.             flg = WRITELN('log',"ref. croisee ! - "||M2Ipath||" Dock "||refdock)
  995.         END
  996.         pathcheck = LEFT(pathcheck,LENGTH(pathcheck)-2)
  997.     END
  998.  
  999. RETURN nodup
  1000.     
  1001.  
  1002.